/*
 *   Copyright (C) Key Bridge Global LLC and/or its affiliates.
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.keybridgeglobal.wsif.device;

import com.keybridgeglobal.wsif.Antenna;
import com.keybridgeglobal.wsif.Channel;
import com.keybridgeglobal.wsif.License;
import com.keybridgeglobal.wsif.enumerated.EnumWsifWirelessServiceType;
import javax.xml.bind.annotation.*;

/**
 * <p>Java class for device complex type.
 * <p/>
 * <p>The following schema fragment specifies the expected content contained
 * within this class.
 * <p/>
 * <
 * pre> &lt;complexType name="device"> &lt;complexContent> &lt;restriction
 * base="{http://www.w3.org/2001/XMLSchema}anyType"> &lt;sequence> &lt;element
 * ref="{}antenna"/> &lt;element ref="{}channel"/> &lt;element ref="{}license"/>
 * &lt;/sequence> &lt;attribute name="frequency"
 * type="{http://www.w3.org/2001/XMLSchema}double" /> &lt;attribute
 * name="chWidth" type="{http://www.w3.org/2001/XMLSchema}double" />
 * &lt;attribute name="erp" type="{http://www.w3.org/2001/XMLSchema}double" />
 * &lt;attribute name="erpMax" type="{http://www.w3.org/2001/XMLSchema}double"
 * /> &lt;attribute name="digital" use="required"
 * type="{http://www.w3.org/2001/XMLSchema}boolean" /> &lt;attribute
 * name="passive" use="required"
 * type="{http://www.w3.org/2001/XMLSchema}boolean" /> &lt;attribute
 * name="deviceId" type="{http://www.w3.org/2001/XMLSchema}string" />
 * &lt;attribute name="deviceSn" type="{http://www.w3.org/2001/XMLSchema}string"
 * /> &lt;attribute name="deviceType"
 * type="{http://www.w3.org/2001/XMLSchema}string" /> &lt;attribute
 * name="manufacturer" type="{http://www.w3.org/2001/XMLSchema}string" />
 * &lt;attribute name="model" type="{http://www.w3.org/2001/XMLSchema}string" />
 * &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
 * &lt;attribute name="description"
 * type="{http://www.w3.org/2001/XMLSchema}string" /> &lt;attribute
 * name="digitalModRate" type="{http://www.w3.org/2001/XMLSchema}double" />
 * &lt;attribute name="digitalModType"
 * type="{http://www.w3.org/2001/XMLSchema}string" /> &lt;attribute
 * name="equipmentClass" type="{http://www.w3.org/2001/XMLSchema}string" />
 * &lt;attribute name="ea" type="{http://www.w3.org/2001/XMLSchema}string" />
 * &lt;attribute name="equipmentRuleNum"
 * type="{http://www.w3.org/2001/XMLSchema}string" /> &lt;attribute
 * name="emissionCode" type="{http://www.w3.org/2001/XMLSchema}string" />
 * &lt;attribute name="wirelessServiceType" type="{}enumWsifWirelessServiceType"
 * /> &lt;attribute name="groupId"
 * type="{http://www.w3.org/2001/XMLSchema}string" /> &lt;attribute
 * name="subGroupId" type="{http://www.w3.org/2001/XMLSchema}string" />
 * &lt;attribute name="antennaRotation"
 * type="{http://www.w3.org/2001/XMLSchema}double" /> &lt;attribute
 * name="antennaHag" use="required"
 * type="{http://www.w3.org/2001/XMLSchema}double" /> &lt;attribute
 * name="antennaHaat" type="{http://www.w3.org/2001/XMLSchema}double" />
 * &lt;attribute name="antennaRcAmsl"
 * type="{http://www.w3.org/2001/XMLSchema}double" /> &lt;/restriction>
 * &lt;/complexContent> &lt;/complexType>
 * </pre>
 * <p/>
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "device", propOrder = {
  "antenna",
  "channel",
  "license"
})
@XmlSeeAlso({
  RxLpaux.class,
  TxLandMobile.class,
  RxGeneric.class,
  TxGeneric.class,
  TxMicrowave.class,
  TxWsd.class,
  TxLpaux.class,
  TxTv.class
})
@XmlRootElement
public abstract class Device {

  @XmlElement(required = true)
  protected Antenna antenna;
  @XmlElement(required = true)
  protected Channel channel;
  @XmlElement(required = true)
  protected License license;
  @XmlAttribute(name = "frequency")
  protected Double frequency;
  @XmlAttribute(name = "chWidth")
  protected Double chWidth;
  @XmlAttribute(name = "erp")
  protected Double erp;
  @XmlAttribute(name = "erpMax")
  protected Double erpMax;
  @XmlAttribute(name = "digital", required = true)
  protected boolean digital;
  @XmlAttribute(name = "passive", required = true)
  protected boolean passive;
  @XmlAttribute(name = "deviceId")
  protected String deviceId;
  @XmlAttribute(name = "deviceSn")
  protected String deviceSn;
  @XmlAttribute(name = "deviceType")
  protected String deviceType;
  @XmlAttribute(name = "manufacturer")
  protected String manufacturer;
  @XmlAttribute(name = "model")
  protected String model;
  @XmlAttribute(name = "name")
  protected String name;
  @XmlAttribute(name = "description")
  protected String description;
  @XmlAttribute(name = "digitalModRate")
  protected Double digitalModRate;
  @XmlAttribute(name = "digitalModType")
  protected String digitalModType;
  @XmlAttribute(name = "equipmentClass")
  protected String equipmentClass;
  @XmlAttribute(name = "ea")
  protected String ea;
  @XmlAttribute(name = "equipmentRuleNum")
  protected String equipmentRuleNum;
  @XmlAttribute(name = "emissionCode")
  protected String emissionCode;
  @XmlAttribute(name = "wirelessServiceType")
  protected EnumWsifWirelessServiceType wirelessServiceType;
  @XmlAttribute(name = "groupId")
  protected String groupId;
  @XmlAttribute(name = "subGroupId")
  protected String subGroupId;
  @XmlAttribute(name = "antennaRotation")
  protected Double antennaRotation;
  @XmlAttribute(name = "antennaHag", required = true)
  protected double antennaHag;
  @XmlAttribute(name = "antennaHaat")
  protected Double antennaHaat;
  @XmlAttribute(name = "antennaRcAmsl")
  protected Double antennaRcAmsl;

  /**
   * Gets the value of the antenna property.
   * <p/>
   * @return possible object is {@link Antenna }
   *
   */
  public Antenna getAntenna() {
    return antenna;
  }

  /**
   * Sets the value of the antenna property.
   * <p/>
   * @param value allowed object is {@link Antenna }
   *
   */
  public void setAntenna(Antenna value) {
    this.antenna = value;
  }

  /**
   * Gets the value of the channel property.
   * <p/>
   * @return possible object is {@link Channel }
   *
   */
  public Channel getChannel() {
    return channel;
  }

  /**
   * Sets the value of the channel property.
   * <p/>
   * @param value allowed object is {@link Channel }
   *
   */
  public void setChannel(Channel value) {
    this.channel = value;
  }

  /**
   * Gets the value of the license property.
   * <p/>
   * @return possible object is {@link License }
   *
   */
  public License getLicense() {
    return license;
  }

  /**
   * Sets the value of the license property.
   * <p/>
   * @param value allowed object is {@link License }
   *
   */
  public void setLicense(License value) {
    this.license = value;
  }

  /**
   * Gets the value of the frequency property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getFrequency() {
    return frequency;
  }

  /**
   * Sets the value of the frequency property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setFrequency(Double value) {
    this.frequency = value;
  }

  /**
   * Gets the value of the chWidth property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getChWidth() {
    return chWidth;
  }

  /**
   * Sets the value of the chWidth property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setChWidth(Double value) {
    this.chWidth = value;
  }

  /**
   * Gets the value of the erp property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getErp() {
    return erp;
  }

  /**
   * Sets the value of the erp property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setErp(Double value) {
    this.erp = value;
  }

  /**
   * Gets the value of the erpMax property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getErpMax() {
    return erpMax;
  }

  /**
   * Sets the value of the erpMax property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setErpMax(Double value) {
    this.erpMax = value;
  }

  /**
   * Gets the value of the digital property.
   * <p/>
   */
  public boolean isDigital() {
    return digital;
  }

  /**
   * Sets the value of the digital property.
   * <p/>
   */
  public void setDigital(boolean value) {
    this.digital = value;
  }

  /**
   * Gets the value of the passive property.
   * <p/>
   */
  public boolean isPassive() {
    return passive;
  }

  /**
   * Sets the value of the passive property.
   * <p/>
   */
  public void setPassive(boolean value) {
    this.passive = value;
  }

  /**
   * Gets the value of the deviceId property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getDeviceId() {
    return deviceId;
  }

  /**
   * Sets the value of the deviceId property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setDeviceId(String value) {
    this.deviceId = value;
  }

  /**
   * Gets the value of the deviceSn property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getDeviceSn() {
    return deviceSn;
  }

  /**
   * Sets the value of the deviceSn property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setDeviceSn(String value) {
    this.deviceSn = value;
  }

  /**
   * Gets the value of the deviceType property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getDeviceType() {
    return deviceType;
  }

  /**
   * Sets the value of the deviceType property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setDeviceType(String value) {
    this.deviceType = value;
  }

  /**
   * Gets the value of the manufacturer property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getManufacturer() {
    return manufacturer;
  }

  /**
   * Sets the value of the manufacturer property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setManufacturer(String value) {
    this.manufacturer = value;
  }

  /**
   * Gets the value of the model property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getModel() {
    return model;
  }

  /**
   * Sets the value of the model property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setModel(String value) {
    this.model = value;
  }

  /**
   * Gets the value of the name property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getName() {
    return name;
  }

  /**
   * Sets the value of the name property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setName(String value) {
    this.name = value;
  }

  /**
   * Gets the value of the description property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getDescription() {
    return description;
  }

  /**
   * Sets the value of the description property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setDescription(String value) {
    this.description = value;
  }

  /**
   * Gets the value of the digitalModRate property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getDigitalModRate() {
    return digitalModRate;
  }

  /**
   * Sets the value of the digitalModRate property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setDigitalModRate(Double value) {
    this.digitalModRate = value;
  }

  /**
   * Gets the value of the digitalModType property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getDigitalModType() {
    return digitalModType;
  }

  /**
   * Sets the value of the digitalModType property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setDigitalModType(String value) {
    this.digitalModType = value;
  }

  /**
   * Gets the value of the equipmentClass property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getEquipmentClass() {
    return equipmentClass;
  }

  /**
   * Sets the value of the equipmentClass property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setEquipmentClass(String value) {
    this.equipmentClass = value;
  }

  /**
   * Gets the value of the ea property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getEa() {
    return ea;
  }

  /**
   * Sets the value of the ea property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setEa(String value) {
    this.ea = value;
  }

  /**
   * Gets the value of the equipmentRuleNum property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getEquipmentRuleNum() {
    return equipmentRuleNum;
  }

  /**
   * Sets the value of the equipmentRuleNum property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setEquipmentRuleNum(String value) {
    this.equipmentRuleNum = value;
  }

  /**
   * Gets the value of the emissionCode property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getEmissionCode() {
    return emissionCode;
  }

  /**
   * Sets the value of the emissionCode property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setEmissionCode(String value) {
    this.emissionCode = value;
  }

  /**
   * Gets the value of the wirelessServiceType property.
   * <p/>
   * @return possible object is {@link EnumWsifWirelessServiceType }
   *
   */
  public EnumWsifWirelessServiceType getWirelessServiceType() {
    return wirelessServiceType;
  }

  /**
   * Sets the value of the wirelessServiceType property.
   * <p/>
   * @param value allowed object is {@link EnumWsifWirelessServiceType }
   *
   */
  public void setWirelessServiceType(EnumWsifWirelessServiceType value) {
    this.wirelessServiceType = value;
  }

  /**
   * Gets the value of the groupId property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getGroupId() {
    return groupId;
  }

  /**
   * Sets the value of the groupId property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setGroupId(String value) {
    this.groupId = value;
  }

  /**
   * Gets the value of the subGroupId property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getSubGroupId() {
    return subGroupId;
  }

  /**
   * Sets the value of the subGroupId property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setSubGroupId(String value) {
    this.subGroupId = value;
  }

  /**
   * Gets the value of the antennaRotation property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getAntennaRotation() {
    return antennaRotation;
  }

  /**
   * Sets the value of the antennaRotation property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setAntennaRotation(Double value) {
    this.antennaRotation = value;
  }

  /**
   * Gets the value of the antennaHag property.
   * <p/>
   */
  public double getAntennaHag() {
    return antennaHag;
  }

  /**
   * Sets the value of the antennaHag property.
   * <p/>
   */
  public void setAntennaHag(double value) {
    this.antennaHag = value;
  }

  /**
   * Gets the value of the antennaHaat property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getAntennaHaat() {
    return antennaHaat;
  }

  /**
   * Sets the value of the antennaHaat property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setAntennaHaat(Double value) {
    this.antennaHaat = value;
  }

  /**
   * Gets the value of the antennaRcAmsl property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getAntennaRcAmsl() {
    return antennaRcAmsl;
  }

  /**
   * Sets the value of the antennaRcAmsl property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setAntennaRcAmsl(Double value) {
    this.antennaRcAmsl = value;
  }
}
